#ifndef TYPE_H
#define TYPE_H

class Type
{
public:
    enum Kind
    {
        Scalar,
        List,
        Invalid
    };

    Type() : m_kind( Invalid ) { }
    Type(Kind kind) : m_kind(kind) { }
    Type(const Type& type) : m_kind( type.m_kind ) { }

    Kind kind() const { return m_kind; }
    bool isScalar() const { return m_kind == Scalar; }
    bool isList() const { return m_kind == List; }
    bool isValid() const { return m_kind != Invalid; }

private:
    Kind m_kind;
};

#endif // TYPE_H
